iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0
DevOps

DevOps菜鳥的30天實踐挑戰:從 CI/CD Pipeline 到雲端佈署系列 第 11

Day 11 - [實作] DevOps 測試自動化:多階段測試整合至 Azure DevOps Pipeline

  • 分享至 

  • xImage
  •  

在今天的文章中,我們將重點介紹如何在 Azure DevOps Pipeline 中整合多階段測試(單元測試整合測試端到端測試)。藉由自動化這些測試流程,我們可以確保每個開發階段的程式碼變更都得到充分的驗證,並確保應用程式能夠正常運行。


為什麼要在 DevOps Pipeline 中進行多階段測試?

多階段測試能幫助我們:

  1. 確保程式碼變更的可靠性。
  2. 自動化測試過程,避免人為錯誤。
  3. 減少手動測試的時間和成本,增強測試的可重複性和一致性。
  4. 支援持續集成 (CI) 和持續交付 (CD),更快速地推出新功能。

設置 Azure DevOps Pipeline

在這一部分,我們將展示如何撰寫 YAML 文件來實現多階段測試的自動化,包括如何安裝 Docker Compose 並規定測試執行順序。

準備測試腳本

可以看昨天的文章都有~

your_project/
│
├── app.py                 # 應用程式主文件
├── test_app.py            # 單元測試腳本
├── test_integration.py    # 整合測試腳本
├── test_e2e.py            # 端到端測試腳本
├── Dockerfile             # 應用程式的 Dockerfile
├── docker-compose.yml     # Docker Compose 配置文件(整合測試用)
├── docker-compose-e2e.yml # Docker Compose 配置文件(端到端測試用)
└── requirements.txt

撰寫 YAML 文件

以下是一個完整的 Azure Pipelines YAML 文件範例,我們將針對 單元測試整合測試端到端測試 分別設置不同的階段,並確保執行順序從單元測試到端到端測試。

trigger:
  branches:
    include:
      - main

pool:
  vmImage: 'ubuntu-latest'

stages:
  - stage: Test
    displayName: '測試階段'
    jobs:
      - job: UnitTests
        displayName: '單元測試'
        steps:
          - task: UsePythonVersion@0
            inputs:
              versionSpec: '3.x'
            displayName: '設定 Python 版本'
            
          - script: |
              sudo apt-get update
              sudo apt-get install -y docker-compose
            displayName: '安裝 Docker Compose'

          - script: |
              python -m pip install --upgrade pip
              pip install -r requirements.txt
            displayName: '安裝依賴'

          - script: |
              python -m unittest test_app.py
            displayName: '執行單元測試'

      - job: IntegrationTests
        displayName: '整合測試'
        steps:
          - script: |
              sudo apt-get update
              sudo apt-get install -y docker-compose
            displayName: '安裝 Docker Compose'

          - script: |
              docker-compose up --build -d
            displayName: '啟動整合測試環境'

          - script: |
              docker-compose exec app python -m unittest test_integration.py
            displayName: '執行整合測試'

          - script: |
              docker-compose down
            displayName: '停止整合測試環境'

      - job: EndToEndTests
        displayName: '端到端測試'
        steps:
          - script: |
              sudo apt-get update
              sudo apt-get install -y docker-compose
            displayName: '安裝 Docker Compose'

          - script: |
              docker-compose -f docker-compose-e2e.yml up --build -d
            displayName: '啟動端到端測試環境'

          - script: |
              docker-compose


重點說明

  1. 流程
    1. 單元測試階段 (Unit Testing)
      • 在這一階段,我們首先設置 Python 版本,安裝 Docker Compose,並安裝應用程式的依賴項。然後使用 unittest 框架執行單元測試。這些測試驗證應用的最小單元(如函數)是否運行正常。
    2. 整合測試階段 (Integration Testing)
      • 整合測試驗證應用程式模塊之間的協作是否正常。首先,我們安裝 Docker Compose,然後使用 docker-compose 啟動整合測試環境,並執行測試腳本。在測試結束後,我們關閉測試環境。
    3. 端到端測試階段 (End-to-End Testing)
      • 這個階段模擬使用者操作,驗證應用的整體流程。在這裡,我們使用 Selenium 等工具來測試應用程式的 UI。測試結束後,同樣關閉環境。
  2. 測試執行順序
    • 我們通過 dependsOn 關鍵字規定了各階段的執行順序。
      • 整合測試IntegrationTests)會在 單元測試UnitTests)成功後執行。
      • 端到端測試EndToEndTests)會在 整合測試 成功後執行。
  3. 執行和停止測試環境
    • docker-compose up --build -d 會啟動測試環境,並在所有測試結束後,使用 docker-compose down 停止並刪除容器。

如何執行這個 Pipeline?

  1. 在 Azure DevOps 中,將這個 YAML 文件儲存在專案的根目錄中,命名為 azure-pipelines.yml
  2. 每次將程式碼推送到 main 分支時,Azure Pipelines 將自動執行這個 Pipeline,從 單元測試端到端測試 按照定義的順序依次執行。

可以參考Day05 - 使用 Azure DevOps Pipelines 持續集成 (CI)的步驟~


結語

通過這篇文章,我們學習了如何在 Azure DevOps Pipeline 中實現多階段測試的自動化,並規定了測試執行的順序。這樣的設置不僅提升了測試效率,也讓程式碼的每個部分都能得到妥善驗證!


上一篇
Day10 - [實作] DevOps 測試自動化:使用 Docker 進行多階段測試
下一篇
Day 12 - [實作] 在 Kubernetes 中佈署應用:使用 Docker Desktop
系列文
DevOps菜鳥的30天實踐挑戰:從 CI/CD Pipeline 到雲端佈署12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言